package com.jky.trial.mapper;

import com.jky.trial.entity.Project;
import com.jky.trial.entity.ProjectExample;
import com.jky.trial.vo.ProjectVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProjectMapper {
    long countByExample(ProjectExample example);

    int deleteByExample(ProjectExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Project record);

    int insertSelective(Project record);

    List<Project> selectByExample(ProjectExample example);

    Project selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Project record, @Param("example") ProjectExample example);

    int updateByExample(@Param("record") Project record, @Param("example") ProjectExample example);

    int updateByPrimaryKeySelective(Project record);

    int updateByPrimaryKey(Project record);

    List<ProjectVo> pageList(ProjectVo example);
    int pageCount(ProjectVo example);

    /**
     * 包含创建者姓名、勘察单位、委托单位、施工单位名称的分页查询
     *
     * @param example
     * @return
     */
    List<ProjectVo> pageListWithName(ProjectVo example);

    /**
     * 领导看板概览统计
     * @param example
     * @return
     */
    List<ProjectVo> staSum(ProjectVo example);

    /**
     * 包含勘察纲要参与用户姓名的列表
     * @param example
     * @return
     */
    List<ProjectVo> selfOutlinePageListWithName(ProjectVo example);


    /**
     * 归属某个用户的项目,
     * ownerId 必传
     * @param example
     * @return
     */
    List<ProjectVo> selfPageListWithName(ProjectVo example);

    /**
     * 统计
     * @param example
     * @return
     */
    Integer selfCountWithName(ProjectVo example);

    /**
     * 用户项目职责统计
     * record.id   要统计用户ID
     * record.startDate  开始日期
     * record.endDate   截止日期
     * 根据项目职责，统计某个用户参与情况.
     * @param record
     * @return
     */
    List<ProjectVo> staPersonProject(Project record);

    /**
     * 统计描述员参与项目
     * @param record
     * @return
     */
    int countDescByPage(Project record);
    /**
     * 分页查询描述员参与项目
     * @param record
     * @return
     */
    List<ProjectVo> selectDescByPage(Project record);

    /**
     *  用户项目状态统计
     *  record.id   要统计用户ID
     *  record.startDate  开始日期
     *  record.endDate   截止日期
     * @param record
     * @return
     */
    ProjectVo staPersonProjectStatus(Project record);

    /**
     *  业务板块部门项目状态统计
     *  record.busId   要统计业务板块，存在时，depId不起作用
     *  record.depId   要统计部门
     *  record.startDate  开始日期
     *  record.endDate   截止日期
     * @param record
     * @return
     */
    ProjectVo staDepProjectStatus(Project record);

    /**
     * record.remark 为null  部门年度新开工项目数量和金额月份统计
     * record.remark 不为null  部门年度归档项目数量和金额按月份统计
     * @param record
     * @return
     */
    List<ProjectVo> staDepProjectByMonth(Project record);

    /**
     * 统计用个用户以某个项目职责参与的项目明细
     * @param record
     * @return
     */
    List<ProjectVo> staPersonProjectDetail(Project record);

}